/*
 * @Description: axios接口请求
 * @Author:
 * @Date:
 * @LastEditors: denghong
 */
import axios from 'axios'
import config from '@/config/index' // 路径配置
import store from '@/store'
import { Toast } from "vant"
import router from "../router/index"
import { setToken } from "@/utils/auth"


// 创建axios 实例
const service = axios.create({
    baseURL: config.baseURL, // api的base_url
    timeout: 10000, // 请求超时时间
    withCredentials: true, // 跨域是否携带凭证
})

// request 拦截器
service.interceptors.request.use(
    (config) => {
        // 这里可以自定义一些config 配置
        const token = store.getters.token
        if (token) {
            config.headers.token = token
        }
        return config
    },
    (error) => {
        //  这里处理一些请求出错的情况
        Promise.reject(error)
    }
)

// response 拦截器
service.interceptors.response.use(
    (res) => {
        if (typeof res.data !== 'object') {
            Toast.fail('服务端异常！')
            return Promise.reject(res)
        }
        if (res.data.resultCode != 200) {
            if (res.data.message) Toast.fail(res.data.message)
            if (res.data.resultCode == 416) {
                store.commit('setToken', '')
                setToken('')
                router.push({ path: '/login' })
            }
            return Promise.reject(res.data)
        }
        return res.data
    },
    (error) => {
        // 这里处理一些response 出错时的逻辑
        return Promise.reject(error)
    }
)

export default service
